package gestiones;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Types;
import conectores.Conexion;
import clases.Habitante;

public class GestionJefeFamilia {

	public boolean registrarJefeFamilia (Habitante jefeFamilia){
		//DateFormat formatter = new SimpleDateFormat("MM/dd/yy");
		Conexion conexion = new Conexion();
		Connection con = null;
        CallableStatement cs = null;
        boolean resultado = false;
        
      
        try {
        	conexion.estableceConexion();
			con=conexion.getConexion();
			con.setAutoCommit(false);
			
			if (jefeFamilia!=null) {
			String query = "{? = call censo_comunal.insertar_habitante(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}";
			cs = con.prepareCall(query);
			cs.registerOutParameter(1, Types.BOOLEAN);
			cs.setString(2,jefeFamilia.getNombreHab());
			cs.setString(3,jefeFamilia.getApellidoHab());
			cs.setString(4,jefeFamilia.getCedulaHab());
			cs.setDate(5,java.sql.Date.valueOf(jefeFamilia.getFechaNac()));
			cs.setString(6,jefeFamilia.getSexoHab());
			cs.setInt(7,jefeFamilia.getNivelInsHab());
			cs.setString(8,jefeFamilia.getNacionalidadHab());
			cs.setString(9,jefeFamilia.getEdoCivilHab());
			cs.setString(10,jefeFamilia.getTelFijoHab());
			cs.setString(11,jefeFamilia.getTelMovilHab());
			cs.setString(12,jefeFamilia.getParentescoHab());
			cs.setString(13,jefeFamilia.getProfOficioHab());
			cs.setString(14,jefeFamilia.getDicapacidadHab());
			cs.setInt(15,jefeFamilia.getIdNataMort());
			cs.setInt(16,jefeFamilia.getExiste());
			cs.setInt(17,jefeFamilia.getJefeFami());
			cs.setInt(18,0);
			
			cs.execute();
			resultado = cs.getBoolean(1);
			
			if(	resultado){
	              con.commit();
	             con.setAutoCommit(true);
	           }
							
				
			}	
        }catch(Exception ex){
        	 ex.getMessage();
        	        }finally{
        	           try{
        	               if (cs != null)  cs.close();
        	               if (con != null) con.close();
        	           }catch(SQLException esql){
        	                esql.getMessage();
        	           }
        	        }
        	        return resultado;
		
	}
	
public boolean insertarFamilia(int nroIntegrante, int ifJefe){
		
		Conexion conexion = new Conexion();
		Connection con = null;
        CallableStatement cs = null;
        boolean resultado = false;
             
        try {
        	conexion.estableceConexion();
			con=conexion.getConexion();
			
			con.setAutoCommit(false);
			if (nroIntegrante > 0 && ifJefe > 0 ){
				
			String query = "{? = call censo_comunal.insertar_familia(?,?)}";
			cs = con.prepareCall(query);
			cs.registerOutParameter(1, Types.BOOLEAN);
			cs.setInt(2,nroIntegrante);
			cs.setInt(3,ifJefe);
			cs.execute();
			resultado = cs.getBoolean(1);
			
			if(	resultado){
	              con.commit();
	             con.setAutoCommit(true);
	           }
						
	}	
				
        }catch(Exception ex){
        	 ex.getMessage();
        	        }finally{
        	           try{
        	               if (cs != null)  cs.close();
        	               if (con != null) con.close();
        	           }catch(SQLException esql){
        	                esql.getMessage();
        	           }
        	        }
        	        return resultado;
	}	

public int obtenerIdFamilia(int idJefe){
	
	Conexion conexion = new Conexion();
	Connection con = null;
    CallableStatement cs = null;
    int resultado = 0;
         
    try {
    	conexion.estableceConexion();
		con=conexion.getConexion();
		
		con.setAutoCommit(false);
		if (idJefe > 0){
			
		String query = "{? = call censo_comunal.obteneridfamilia(?)}";
		cs = con.prepareCall(query);
		cs.registerOutParameter(1, Types.INTEGER);
		cs.setInt(2,idJefe);
		cs.execute();
		resultado = cs.getInt(1);
		
		if(	resultado>0){
              con.commit();
             con.setAutoCommit(true);
           }
					
}	
			
    }catch(Exception ex){
    	 ex.getMessage();
    	        }finally{
    	           try{
    	               if (cs != null)  cs.close();
    	               if (con != null) con.close();
    	           }catch(SQLException esql){
    	                esql.getMessage();
    	           }
    	        }
    	        return resultado;
}	
}
